package com.example.betty.checkbox;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.RadioGroup;
import android.widget.Toast;
//需求：选中checkbox时提示选中的文本信息 点击确定按钮时打印做种选择的文本信息 实现全选
//1.先绑定checkbox的状态监听事件 选中某一项时给出提示信息
//2.绑定按钮的单击事件 点击时判断最终选择的checkbox 将文中的文本给出提示
//3.实现全选功能
//     第一步：如果所有的chenckbox全部选中则全选被选中
//     第二部：如果全选选中则所有的checkbox被选中
//     第三部：如果取消全选则所有checkbox都被取消
public class MainActivity extends AppCompatActivity {
    private  MyOnCheckdeChangeListener listener=new MyOnCheckdeChangeListener();
    private CheckBox cb01,cb02,cb03,cbal;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        cb01=(CheckBox) findViewById(R.id.cb01);
        cb02=(CheckBox) findViewById(R.id.cb02);
        cb03=(CheckBox) findViewById(R.id.cb03);
        cbal=(CheckBox) findViewById(R.id.cbal);
        cb01.setOnCheckedChangeListener(listener);
        cb02.setOnCheckedChangeListener(listener);
        cb03.setOnCheckedChangeListener(listener);
    }
    //点击事件调用的函数
    public void click(View view){
        switch (view.getId()){
            case R.id.btn:
              String str=OnCheckString();
                Toast.makeText(MainActivity.this, "你的爱好："+str, Toast.LENGTH_SHORT).show();
                break;
            case R.id.cbal:
                boolean bl=cbal.isChecked();//选中的checkbox的状态，true选中，false不选
                cb01.setChecked(bl);//设置按钮cb01的选中与否
                cb02.setChecked(bl);
                cb03.setChecked(bl);
                break;
        }
    }
    //获取checkbox中最终选择的文本
    public String OnCheckString()
    {
        StringBuilder sb=new StringBuilder();//建立数据缓冲区
        if(cb01.isChecked())
            sb.append(cb01.getText().toString());//.getText().toString()获取当前按钮的文本信息
        if(cb02.isChecked())
            sb.append(cb02.getText().toString());
        if(cb03.isChecked())
            sb.append(cb03.getText().toString());
        return sb.toString();
    }
    //以内部类形式实现选中状态改变的监听事件
    public class MyOnCheckdeChangeListener implements CheckBox.OnCheckedChangeListener
    {
        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b)
        {
            //CompoundButton compoundButton表示状态切换放入控件对象
            // boolean b表示当前控件对象的的选中状态
            //获取选中状态的文本并给出提示
            CheckBox cb=(CheckBox)compoundButton;
            String str=cb.getText().toString();
            if(b)
            Toast.makeText(MainActivity.this, "你的爱好是："+str, Toast.LENGTH_SHORT).show();
            //如果发现列表中的checkbox全部被选中则全选被选中，否则全选不被选中
            if(cb01.isChecked()&&cb02.isChecked()&&cb03.isChecked())
                cbal.setChecked(true);
            else
                cbal.setChecked(false);
        }
    }

}